package top.jolyoulu.corecommon.queue.delayed;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.DelayQueue;

/**
 * @Author: JolyouLu
 * @Date: 2023/4/15 18:48
 * @Description 延迟队列的实现
 */
@Slf4j
public class DelayedTaskQueue {

    private final DelayQueue<DelayedTaskEntity<?>> queue = new DelayQueue<>();

    /**
     * 提交任务
     */
    public void put(DelayedTaskEntity<?> task){
        queue.put(task);
    }

    /**
     * 获取任务
     */
    public DelayedTaskEntity<?> take(){
        DelayedTaskEntity<?> res = null;
        try {
            res = queue.take();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            log.error("任务被中断",e);
        }
        return res;
    }

    /**
     * 获取任务数
     */
    public int size(){
        return queue.size();
    }

}
